# https://leetcode.cn/problems/arithmetic-slices/description/


class Solution:
    def numberOfArithmeticSlices(self, nums: List[int]) -> int:
        n = len(nums)
        # 如果数组长度小于 3，则直接返回 0
        if n <= 2:
            return 0

        # 初始化公差和连续等差数列的长度
        d, t = nums[0] - nums[1], 0

        ans = 0

        # 因为等差数列的长度至少为 3，所以可以从 i=2 开始枚举
        for i in range(2, n):
            # 这里的话只去掉了最开始的零和一这个序列，01  12
            # 如果当前数与前一个数的差值等于公差，则连续等差数列的长度加一
            if nums[i - 1] - nums[i] == d:
                t += 1
            # 否则，更新公差，并将连续等差数列的长度置为 0
            else:
                d = nums[i - 1] - nums[i]
                t = 0

            # 将当前连续等差数列的长度加到答案中
            ans += t

        # print(ans)
        return ans
